//Déclaration variable globale
var LINE = 7;
var COLUMN = 10;

var scoreTT = 0
var scoreEM = 0

var tourPion = "TT";
var tourTotem = "BN";

var depMaxBN = 0;
var depMaxEH = 0;

var pion = "";


/**
 * Initialisation du jeu
 */
function initGame(){
	tourPion = "TT";
	tourTotem = "BN";
	depMaxBN = 0;
	depMaxEH = 0;
	pion = "";
	showScore();
	
	createTable();
	initTTPieces();
	initEMPieces();
	player();
	deplacementTotem();
}

/**
 * Génère le plateau de jeu
 */
function createTable(){
	var genTable = "";
	$('#tableDeJeu').remove();
	$('#plateau').html("<table id = 'tableDeJeu'>");

	for ( var i = 0; i < LINE; i++) {
		genTable += "<tr id = '" + i+ "'>";

		for ( var j = 0; j < COLUMN; j++) {
			genTable += "<td id = '" + j +"' ></td>";
		}

		genTable += "</tr>";
	}

	$("#tableDeJeu").html(genTable);
}

/**
 * Initialise la position des pions Tomates Tueuses
 */
function initTTPieces(){
	for (i = 0; i < 5; i++) {
		$("#tableDeJeu tr#"+(i+1)+" td#1").append("TT");
		$("#tableDeJeu tr#"+(i+1)+" td#1").attr('class','tomateTueuse');
	};

	// initialisation du totem
	$("#tableDeJeu tr#3 td#0").append("BN");
	$("#tableDeJeu tr#3 td#0").attr('class','bananeRadio');
}

/**
 * Initialise la position des pions Evils Monkey
 */
function initEMPieces(){
	for (i = 0; i < 5; i++) {
		$("#tableDeJeu tr#"+(i+1)+" td#8").append("EM");
		$("#tableDeJeu tr#"+(i+1)+" td#8").attr('class','monkey');
	};

	// initialisation du totem
	$("#tableDeJeu tr#3 td#9").append("EH");
	$("#tableDeJeu tr#3 td#9").attr('class','engrais');
}

/**
 *  Définit l'ordre de jeu
 */
function player(){
	$("#joueur").empty();
	if(tourPion == 'TT'){
		$("#joueur").html($('#nom_joueur1').val() + " à vous de jouer");
		$('#joueur1').attr('style','color:red');
		$('#joueur2').attr('style','color:white');
	}else{
		$("#joueur").html($('#nom_joueur2').val() + " à vous de jouer"); 
		$('#joueur2').attr('style','color:red');
		$('#joueur1').attr('style','color:white');
	}
}

/**
 * Affichage du compteur de déplacement du totem
 */
function deplacementTotem(){
	$("#totemBN").empty();
	$("#totemEH").empty();


	$("#totemBN").append("Déplacement du totem : "+depMaxBN+"/3");
	$("#totemEH").append("Déplacement du totem : "+depMaxEH+"/3");
}
/**
 * Affichage du score à l'écran
 */
function showScore(){
	$("#score1").empty();
	$("#score1").append("SCORE : Tomates Tueuses : "+ scoreTT + " -- Evil Monkeys " + scoreEM);
}

/**
 * Supprime les cases de déplacements une foit le pion déplacé
 */
function clear_deplacement(){

	$("#tableDeJeu td.moveable").attr('class','');
	$("#tableDeJeu td.pionPrenable").attr('class','');
	$("#tableDeJeu td.pointDepart").attr('class','');
	
	//Efface les zones non déplacable
	$(".nonMoveable_TT").removeClass("nonMoveable_TT");
	$(".nonMoveable_EH").removeClass("nonMoveable_EH");
	$(".nonMoveable_EM").removeClass("nonMoveable_EM");
	$(".nonMoveable_BN").removeClass("nonMoveable_BN");
} 

/**
 * Gestion de la sélection des pièces
 */
function select_pion(){

	// Select pion au click
	$('#tableDeJeu td').click(function() {
		var x = $(this).parent().attr("id");
		var y = this.id;

		// Teste si on selectionne un pion ou un totem qui peut encore se déplacer (Déplacement limité à 3)
		if( (($(this).text()) == tourPion) 
				|| (($(this).text() == tourTotem) && (tourTotem == "BN") && (depMaxBN < 3)) 
				|| (($(this).text() == tourTotem) && (tourTotem == "EH") && (depMaxEH < 3)) ){

			// Efface toutes les classes et redéfini une classe au pion/totem choisi
			$('#tableDeJeu td.moveable').attr('class','');
			$('#tableDeJeu td.pointDepart_TT').attr('class','tomateTueuse');
			$('#tableDeJeu td.pointDepart_EM').attr('class','monkey');
			$('#tableDeJeu td.pointDepart_BN').attr('class','bananeRadio');
			$('#tableDeJeu td.pointDepart_EH').attr('class','engrais');

			// Défini le pion qui est sélectionné
			if(tourPion == 'TT'){
				if($(this).text() == tourPion){
					$(this).attr('class','pointDepart_TT');
					pion="TT";
				}else{
					$(this).attr('class','pointDepart_BN');
					pion="BN";
				}

			}else{
				if($(this).text() == tourPion){
					$(this).attr('class','pointDepart_EM');
					pion="EM";
				}else{
					$(this).attr('class','pointDepart_EH');
					pion="EH";
				}
			}


			// Teste si c'est un pion (déplacement de 1) ou un totem (déplacement de 2)
			if( ($(this).text()=='BN') || ($(this).text()=='EH') ){
				var nb = 2;
				var nb1 = -2;
			}else{
				var nb = 1;
				var nb1 = -1;
			}
			
			//Efface les zones non déplacable
			$(".nonMoveable_TT").removeClass("nonMoveable_TT");
			$(".nonMoveable_EH").removeClass("nonMoveable_EH");
			$(".nonMoveable_EM").removeClass("nonMoveable_EM");
			$(".nonMoveable_BN").removeClass("nonMoveable_BN");
			
			// Défini les possibilités de déplacement 
			for (var i=nb1; i<=nb; i++) {
				for (var j=nb1; j<=nb; j++) {

					if($("#tableDeJeu tr#"+(parseInt(x)+i)+" td#"+(parseInt(y)+j)).text() == ""){
						$("#tableDeJeu tr#"+(parseInt(x)+i)+" td#"+(parseInt(y)+j)).attr('class','moveable'); 
					}else{
						//Affichage des pions non prenables
						//Pions tomates tueuses & Banane
						if( ($("#tableDeJeu tr#"+(parseInt(x)+i)+" td#"+(parseInt(y)+j)).text() == 'TT') && pion == 'TT' ){
							
							$("#tableDeJeu tr#"+(parseInt(x)+i)+" td#"+(parseInt(y)+j)).addClass("nonMoveable_TT");
						}
						
						if( ($("#tableDeJeu tr#"+(parseInt(x)+i)+" td#"+(parseInt(y)+j)).text() == 'BN') && pion == 'TT' ){
							
							$("#tableDeJeu tr#"+(parseInt(x)+i)+" td#"+(parseInt(y)+j)).addClass("nonMoveable_BN");
						}
						
						//Pions evil monkeys & engrais
						if( ($("#tableDeJeu tr#"+(parseInt(x)+i)+" td#"+(parseInt(y)+j)).text() == 'EM') && pion == 'EM' ){
							
							$("#tableDeJeu tr#"+(parseInt(x)+i)+" td#"+(parseInt(y)+j)).addClass("nonMoveable_EM");
						}
						
						if( ($("#tableDeJeu tr#"+(parseInt(x)+i)+" td#"+(parseInt(y)+j)).text() == 'EH') && pion == 'EM' ){
							
							$("#tableDeJeu tr#"+(parseInt(x)+i)+" td#"+(parseInt(y)+j)).addClass("nonMoveable_EH");
						}
						
						
						//Possibilitès d'actions
						if( ($("#tableDeJeu tr#"+(parseInt(x)+i)+" td#"+(parseInt(y)+j)).text() != tourTotem)
								&& ($("#tableDeJeu tr#"+(parseInt(x)+i)+" td#"+(parseInt(y)+j)).text() != tourPion)){

							if( ($("#tableDeJeu tr#"+(parseInt(x)+i)+" td#"+(parseInt(y)+j)).text() == 'BN') && ($(this).text() == 'EH') ){
								$("#tableDeJeu tr#"+(parseInt(x)+i)+" td#"+(parseInt(y)+j)).attr('class','bananeRadio');
							}

							if( ($("#tableDeJeu tr#"+(parseInt(x)+i)+" td#"+(parseInt(y)+j)).text() == 'EM') && ($(this).text() == 'TT') ){
								$("#tableDeJeu tr#"+(parseInt(x)+i)+" td#"+(parseInt(y)+j)).attr('class','pionPrenable_EM');
							}

							if( ($("#tableDeJeu tr#"+(parseInt(x)+i)+" td#"+(parseInt(y)+j)).text() == 'TT') && ($(this).text() == 'EM') ){
								$("#tableDeJeu tr#"+(parseInt(x)+i)+" td#"+(parseInt(y)+j)).attr('class','pionPrenable_TT');
							}

							if( ($("#tableDeJeu tr#"+(parseInt(x)+i)+" td#"+(parseInt(y)+j)).text() == 'EH') && ($(this).text() == 'TT') ){
								$("#tableDeJeu tr#"+(parseInt(x)+i)+" td#"+(parseInt(y)+j)).attr('class','pionPrenable_EH');
							}           

							if( ($("#tableDeJeu tr#"+(parseInt(x)+i)+" td#"+(parseInt(y)+j)).text() == 'BN') && ($(this).text() == 'EM') ){
								$("#tableDeJeu tr#"+(parseInt(x)+i)+" td#"+(parseInt(y)+j)).attr('class','pionPrenable_BN');
							}
							
							
						}
					}
				};
			};
		}      
	});
}

//Gère le déplacement d'un pion/totem
function movePiece(){

	// Déplacement du pion au deuxième click
	$('#tableDeJeu td').click(function(){

		// Teste si le déplacement correspond aux différentes possibilités
		if($(this).hasClass('moveable') 
				|| $(this).hasClass('pionPrenable_TT')
				|| $(this).hasClass('pionPrenable_EM')
				|| $(this).hasClass('pionPrenable_BN')
				|| $(this).hasClass('pionPrenable_EH')){
			var y = this.id;
			var x = $(this).parent().attr("id");

			// Copie du pion à l'emplacement choisi
			if( $("#tableDeJeu tr#"+x+" td#"+y).text() == "") {  

				// Teste quel pion est sélectionné. 
				// Ensuite on copie le contenu de l'emplacement à l'endroit demandé
				// Puis on supprime le contenu de l'ancien emplacement
				// Si un totem se déplace on incrémente au compteur
				if(pion == 'TT'){
					$("#tableDeJeu tr#"+x+" td#"+y).append($("#tableDeJeu td.pointDepart_TT").text());
					$("#tableDeJeu tr#"+x+" td#"+y).attr('class','tomateTueuse');
						
					$("#tableDeJeu td.pointDepart_TT").empty();
					$("#tableDeJeu td.pointDepart_TT").attr('class','');
				}
				if(pion == 'EM'){
					$("#tableDeJeu tr#"+x+" td#"+y).append($("#tableDeJeu td.pointDepart_EM").text());
					$("#tableDeJeu tr#"+x+" td#"+y).attr('class','monkey');

					$("#tableDeJeu td.pointDepart_EM").empty();
					$("#tableDeJeu td.pointDepart_EM").attr('class','');
				}
				if(pion == 'BN'){
					$("#tableDeJeu tr#"+x+" td#"+y).append($("#tableDeJeu td.pointDepart_BN").text());
					$("#tableDeJeu tr#"+x+" td#"+y).attr('class','bananeRadio');

					$("#tableDeJeu td.pointDepart_BN").empty();
					$("#tableDeJeu td.pointDepart_BN").attr('class','');
					depMaxBN++;
				}
				if(pion == 'EH'){
					$("#tableDeJeu tr#"+x+" td#"+y).append($("#tableDeJeu td.pointDepart_EH").text());
					$("#tableDeJeu tr#"+x+" td#"+y).attr('class','engrais');

					$("#tableDeJeu td.pointDepart_EH").empty();
					$("#tableDeJeu td.pointDepart_EH").attr('class','');
					depMaxEH++;
				}

			}else{
				if( ($("#tableDeJeu tr#"+x+" td#"+y).text() == 'BN') || ($("#tableDeJeu tr#"+x+" td#"+y).text() == 'EH')){

					if($("#tableDeJeu tr#"+x+" td#"+y).text()=='EH'){
						alert('Felicitation aux Tomates Tueuses qui viennent de gagner la partie');
						scoreTT++;
					}else{
						alert('Felicitation aux Evil Monkeys qui viennent de gagner la partie');
						scoreEM++;
					}
					initGame();
					select_pion();
					movePiece();
					//location.reload();

				}else{

					if(pion == 'TT'){
						$("#tableDeJeu tr#"+x+" td#"+y).empty();
						$("#tableDeJeu tr#"+x+" td#"+y).attr('class','');

						$("#tableDeJeu tr#"+x+" td#"+y).append($("#tableDeJeu td.pointDepart_TT").text());
						$("#tableDeJeu tr#"+x+" td#"+y).attr('class','tomateTueuse');

						// Efface toutes les classes et redéfini une classe au pion/totem choisi
						$('#tableDeJeu td.pointDepart_TT').attr('class','tomateTueuse');
					}

					if(pion == 'EM'){
						$("#tableDeJeu tr#"+x+" td#"+y).empty();
						$("#tableDeJeu tr#"+x+" td#"+y).attr('class','');

						$("#tableDeJeu tr#"+x+" td#"+y).append($("#tableDeJeu td.pointDepart_EM").text());
						$("#tableDeJeu tr#"+x+" td#"+y).attr('class','monkey');

						// Efface toutes les classes et redéfini une classe au pion/totem choisi
						$('#tableDeJeu td.pointDepart_EM').attr('class','monkey');
					}

				}

			}

			clear_deplacement();

			// Teste pour le changement de tour
			if(tourPion=="TT"){
				tourPion="EM";
				tourTotem="EH";
			}else{
				tourPion="TT";
				tourTotem="BN";
			}             
		}
		player();
		deplacementTotem();
	});
}         
